package com.cencat.framework.file.entity;

import com.baomidou.mybatisplus.annotation.*;
import com.cencat.framework.core.entity.TenantBaseEntity;
import lombok.Data;
import lombok.EqualsAndHashCode;

import java.time.LocalDateTime;

/**
 * 文件存储配置实体类
 * 存储不同存储后端的配置信息
 */
@Data
@EqualsAndHashCode(callSuper = true)
@TableName("file_storage_config")
public class FileStorageConfig extends TenantBaseEntity {
    
    /**
     * 配置ID
     */
    @TableId(type = IdType.AUTO)
    private Long id;
    
    /**
     * 存储类型：LOCAL/MINIO/ALIYUN_OSS/TENCENT_COS
     */
    @TableField("storage_type")
    private String storageType;
    
    /**
     * 配置名称
     */
    @TableField("config_name")
    private String configName;
    
    /**
     * 配置描述
     */
    @TableField("config_desc")
    private String configDesc;
    
    /**
     * 端点地址
     */
    @TableField("endpoint")
    private String endpoint;
    
    /**
     * 访问密钥（加密存储）
     */
    @TableField("access_key")
    private String accessKey;
    
    /**
     * 秘密密钥（加密存储）
     */
    @TableField("secret_key")
    private String secretKey;
    
    /**
     * 存储桶名称
     */
    @TableField("bucket_name")
    private String bucketName;
    
    /**
     * 区域
     */
    @TableField("region")
    private String region;
    
    /**
     * 是否默认配置
     */
    @TableField("is_default")
    private Boolean isDefault;
    
    /**
     * 状态：0-禁用 1-启用
     */
    @TableField("status")
    private Integer status;
    
    /**
     * 创建人ID
     */
    @TableField("creator_id")
    private Long creatorId;
    
    /**
     * 更新人ID
     */
    @TableField("updater_id")
    private Long updaterId;
    
    /**
     * 创建时间
     */
    @TableField(value = "create_time", fill = FieldFill.INSERT)
    private LocalDateTime createTime;
    
    /**
     * 更新时间
     */
    @TableField(value = "update_time", fill = FieldFill.INSERT_UPDATE)
    private LocalDateTime updateTime;
}